//long long myPow(long long x, int N) {
//    long long ans = 1;
//    long long n = N;
//    if (n < 0) {
//        n = -n;
//        x = 1 / x;
//    }
//    while (n) {
//        if (n & 1) {
//            ans *= x;
//        }
//        x *= x;
//        n >>= 1;
//    }
//    return ans;
//}
//
//class Solution {
//public:
//    int myAtoi(string str) {
//        long long count = 0;
//        int i = 0;
//        while (str[i] == ' ')
//            ++i;
//
//        int change = 0;
//
//        if (str[i] == '-') {
//            change = 1;
//            ++i;
//        }
//        else if (str[i] == '+')
//            ++i;
//
//        while (str[i] == '0') {
//            ++i;
//        }
//
//        int k = 0, len = 0;
//        while (str[i] >= '0' && str[i] <= '9') {
//            ++len;
//            ++i;
//        }
//        if (len > 10) {
//            if (change) return -2147483648;
//            return 2147483647;
//        }
//        if (len == 0) return 0;
//        i -= len;
//        long long j = myPow(10, len - 1);
//        while (len--) {
//            k = str[i] - '0';
//            count += j * k;
//            j /= 10;
//            ++i;
//        }
//        if (change) {
//            count = -count;
//        }
//        int ans = 0;
//        if (count < -2147483648) {
//            ans = -2147483648;
//        }
//        else if (count > 2147483647) {
//            ans = 2147483647;
//        }
//        else {
//            ans = (int)count;
//        }
//        return ans;
//    }
//};